Tilting to scroll

ABSTRACT

In one embodiment, a method includes sending information to display a visual content; determining a scroll range for the visual content based on dimensions of the visual content; determining an origin position within the visual content from which the visual content is configured to be scrolled, wherein the origin position is determined based on a type of an application associated with the visual content; receiving an initial tilt measurement of a client computing device; receiving a second tilt measurement of the client computing device; determining a progress parameter based on at least the scroll range, the origin position, the initial tilt measurement, and the second tilt measurement; and sending information to scroll the visual content based on the progress parameter.

PRIORITY

This application is a continuation under 35 U.S.C. § 120 of U.S. patentapplication Ser. No. 13/846,131, filed 18 Mar. 2013.

TECHNICAL FIELD

This disclosure generally relates to image display and the viewingexperience.

BACKGROUND

A computing device—such as a smartphone, tablet computer, or laptopcomputer—may include integrated components for determining itsdirection, or orientation, such as a compass, accelerometer, orgyroscope, and/or an interface to one or more external such components.Such a device may also include one or more integrated display screensand/or an interface to one or more external display screens. Mobilecomputing devices may also execute software applications, such as games,map applications, web browsers, personal information managementapplications, work productivity applications, or social-networkingapplications.

SUMMARY OF PARTICULAR EMBODIMENTS

When an image is displayed on a screen that is not big enough to displaythe whole of the image at once, particular embodiments may enable a userto scroll the image in one or more directions, along one or more axes,by using a tilting motion. The image may comprise any visual contentthat can be displayed on the screen, including, by way of example andnot limitation, a photo, a number of photos represented as a photoalbum, a list of emails, a web page, a map, a visual representation of alibrary of music, a video game, or a technical diagram.

The computing device may determine a scroll range for the image, measureinitial tilt according to a gyroscope, and determine an origin positionfor the image. Once the computing device receives an indication from thegyroscope that movement satisfying a threshold for activating scrollinghas been satisfied, the computing device calculates a progressparameter, based on the input from the sensor(s) and the scroll range.The computing device then updates the presentation of the image based onthe progress parameter. As the computing device continues to receiveindications from the sensor(s) that movement is detected, the computingdevice continues to update presentation of the image appropriately. Thecomputing device may also receive user input to re-calibrate the originposition, at which point scrolling may continue based on the new originposition.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A-F are wireframes illustrating scrolling an image according toparticular embodiments disclosed herein.

FIG. 2 illustrates an example method for scrolling an image according toparticular embodiments disclosed herein.

FIG. 3 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

When an image is displayed on a screen that is not big enough to displaythe whole of the image at once, particular embodiments may enable a userto scroll the image in one or more directions by using a tilting motion.The image may comprise any visual content that can be displayed on thescreen, including, by way of example and not limitation, a photo, anumber of photos represented as a photo album, a list of emails, a webpage, a map, a visual representation of a library of music, a videogame, or a technical diagram.

The computing device may determine a scroll range for the image, measureinitial tilt according to a gyroscope, and determine an origin positionfor the image. Once the computing device receives an indication from thegyroscope that movement satisfying a threshold for activating scrollinghas been satisfied, the computing device calculates a progressparameter, based on the input from the sensor(s) and the scroll range.The computing device then updates the presentation of the image based onthe progress parameter. As the computing device continues to receiveindications from the sensor(s) that movement is detected, the computingdevice continues to update presentation of the image appropriately. Thecomputing device may also receive user input to re-calibrate the originposition, at which point scrolling may continue based on the new originposition.

FIGS. 1A-F are wireframes illustrating an example use case of scrollingan image according to particular embodiments disclosed herein. As shownin FIG. 1A a user may use a computing device, such as a smartphone, toview a panoramic photo of a beach scene that, when resized so that thewhole image appears on the screen, is far too small to view much detail.Embodiments of a computing device are described in further detail withrespect to FIG. 3. The user may be able to zoom in on the image so thatthe complete vertical extent of the image fills the whole displayregion, as illustrated in FIG. 1B. At this point, the user can tilt thesmartphone from side to side along a vertical axis (shown as a dottedline in FIG. 1B) planar to the display screen to scroll back and forththrough the panoramic image and view the entirety of the panoramic imagefrom the left edge of the image to the right edge of the image and viceversa. In another example, a user may use the smartphone to view a listof contacts and tilt the smartphone up and down along a horizontal axisplanar to the display screen to scroll the list of contacts. In anotherexample, a user may use the smartphone to view a map and tilt thesmartphone in any direction along a horizontal axis and a vertical axisplanar to the display screen to scroll the map. Within the scope of thisdisclosure, “tilting” refers to any motion that may be measured by agyroscope, and measurement of “tilt” refers to any measurements of roll,pitch, yaw, or any combination thereof that may be measured by agyroscope. Although some embodiments described herein may refer to asingle axis around which tilting may occur, one of skill in the artwould be aware that the scrolling methods described herein may beimplemented with respect to more than one axis.

In particular embodiments, as shown in the example illustrated in FIG.1B, when the image is displayed (immediately after the zoom-in commandis received), the photo is presented so as to be centered with respectto the overall panoramic image—this origin position is the position inthe image from which scrolling may commence. In particular embodiments,the origin position may be set at some position in the image inaccordance with a particular application. For example, in an applicationwhere the user is asked to browse through a panoramic image of a shelfof books at a library to find one or more particular books by visualrecognition, the origin position may be set at the left edge of theimage. In another example, for a list of contacts, the origin positionmay be set at the top of the list, or at the first entry in the contactlist for a selected letter of the alphabet, from which the user mayscroll down (and back up). In particular embodiments, the originposition may be set at some position in the image in accordance with auser selection. For example, when displaying a map of the United States,the origin position may be set at a location selected by the user (e.g.,the Grand Canyon region), from which the user may scroll around the mapin any direction. In particular embodiments, the origin position may beset at any appropriate position in the image in accordance with relevantfactors.

In particular embodiments, as indicated by the example illustrated inFIG. 1B, when the image is displayed (again, immediately after thezoom-in command is received), the computing device may also display avisual hint encouraging the user to begin scrolling and/or notifying theuser that such a feature is available. The hint may indicate in whichdirection(s) scrolling is possible—as shown in FIG. 1B, scrolling ispossible in both directions, while in FIG. 1F, scrolling is onlypossible in one direction (since the edge of the image has beenreached).

FIGS. 1C-F illustrate an example of scrolling a zoomed-in display of thepanoramic photo of FIG. 1A, starting from the origin position andinitial tilt of 0° shown in FIG. 1B. As shown in FIGS. 1C-F, as the usercommences tilting the computing device clockwise (with respect to theuser holding the computing device) from an initial tilt, the computingdevice detects the movement by measuring the change in tilt. Once athreshold to activate scrolling has been satisfied (e.g., tilting thecomputing device beyond a minimum delta of 2° from the initial tilt ineither direction, or tilting the computing device faster than a minimumrotation rate in either direction), the computing device commencesscrolling the image in accordance with the measured tilt. As shown inFIGS. 1C-F, as the tilt increases, the extent to which the image isscrolled also increases until the edge of the image is reached in FIG.1F, when the user has tilted the computing device to degree required toreach the edge.

FIG. 2 illustrates an example method 200 for scrolling an imageaccording to particular embodiments. The method may begin at step 210,where a computing device presents an image for display. In particularembodiments, the computing device may comprise a handheld device with anintegrated display screen. In particular embodiments, the computingdevice may be connected to an external display screen. Within the scopeof this disclosure, a first component is said to be connected to asecond component when it is physically connected (e.g., via a wire orcord), wirelessly connected (e.g., via BLUETOOTH, Near-FieldCommunications (NFC), RF, or Wi-Fi), or connected through any other kindof network (e.g., a LAN, private WAN, or the Internet).

At step 220, the computing device determines a scroll range for theimage with respect to an axis. In particular embodiments, the scrollrange is determined based on the aspect ratio of the image as well asthe absolute dimensions of the image, e.g.,scrollRange=((photoWidth/photoHeight)*(DEGREES_TO_RADIANS(tiltRange)/(length/height))), where tiltRange is the degrees of tiltrequired to scroll from one edge of the image to the opposite edge, andlength×height is the aspect ratio of the image (where length is thedimension along which scrolling may occur). The tiltRange parameter mayvary in accordance with the aspect ratio of the image, so that a largertiltRange may be used for scrolling along the length of a panoramicimage with an aspect ratio of 3×1, while a smaller tiltRange may be usedfor scrolling along the length of a 3×3 image. In particularembodiments, tiltRange may also be constrained to ensure that the useris not required to tilt the device to such an extent that it is awkwardfor the user to view the screen.

At step 230, the computing device measures tilt using a gyroscopesensor. The measured tilt comprises an initial tilt from which anychange in tilt will be measured. For example, if a handheld computingdevice with an integrated gyroscope that is displaying a panoramic imagewith a horizontal orientation measures the tilt with respect to avertical axis as being 0.3°, because a user holding the device isholding it almost perfectly level, any tilt measured in relation tosubsequent motion registered by the device will be measured as a deltafrom that initial tilt. In particular embodiments, if the overallorientation changes while the user is viewing that same image (e.g., ifthe user lies down on their side while using the smartphone), thecomputing device may update the initial tilt so as to preserve the axisfor scrolling the presentation of the image with respect to the displaywhile appropriately applying subsequent tilt measurements to determinethe progress parameter. Any tilt measured in relation to subsequentmotion registered by the device will be measured as a delta from thatupdated initial tilt. As indicated in the example shown in FIG. 1B, theinitial tilt is measured at 0°. In particular embodiments, the computingdevice may comprise a handheld device with an integrated gyroscope. Inparticular embodiments, the computing device may be connected to anexternal handheld controller comprising a gyroscope.

At step 240, the computing device determines an origin position. Asdescribed above with respect to FIG. 1B, the origin position may be setat a particular position in the image in accordance with a particularapplication, in accordance with a user selection, or at any appropriateposition in the image in accordance with relevant factors.

At step 250, the computing device receives an indication that thegyroscope sensor has detected movement that satisfies a threshold foractivating scrolling. As discussed above, a threshold may need to besatisfied in order to activate scrolling—this may help to preventtypical hand tremors from triggering scrolling of the image. In oneexample embodiment, the threshold may comprise a minimum change inmeasured tilt, with respect to the initial tilt, in either direction. Inanother example embodiment, the threshold may comprise a minimumrotation rate in either direction (e.g., where the scrolling function isactivated by a sharp tilting flick of the computing device).

At step 260, the computing device calculates, based on the input fromthe sensor(s) and the scroll range, a progress parameter that indicatehow to scroll the image. The progress parameter may comprise one or moreattributes, including, by way of example and not limitation, (1) thepreceding tilt measurement reported by the gyroscope, (2) the currenttilt measurement reported by the gyroscope, (3) a delta between thepreceding tilt measurement reported by the gyroscope and the currenttilt measurement, wherein the gyroscope samples measurements at regularintervals, (4) a rotation rate calculated based on the delta between thepreceding tilt measurement reported by the gyroscope and the currenttilt measurement, (5) an offset of the origin position with respect tothe absolute position as determined for the last tilt measurement, or(6) an offset of the origin position with respect to the absoluteposition as determined for the current tilt measurement reported by thegyroscope. In particular embodiments, the progress parameter may berequired to meet a minimum rotation rate, so as to prevent gradualchanges in the user's device-holding stance from triggering scrolling.

In particular embodiments, the input may be clipped to limit the inputdata to the dimensions of the image (so that the user cannot scrollbeyond the scroll range). In particular embodiments, the input datareceived from the gyroscope may be smoothed to reduce or eliminateshakiness due to hand tremors and produce a smooth scrolling motion.Smoothing the input may comprise applying a low-pass filter to the inputdata (to eliminate spikes in the input) and/or applying an RK4(Runge-Kutte) solver to the input (to produce a steadily progressive andsmooth scrolling motion).

At step 270, the computing device updates the image presentation to showscrolling of the image based on the progress parameter. The imagepresentation may include special effects, such as a virtual springeffect (e.g., the image bounces when scrolled to the edge of the imageand “hits” the edge and/or the image scrolling slows down as the edgeapproaches and the virtual spring is stretched farther). In particularembodiments, movements of an image displayed on a screen may besimulated by attaching one end of a virtual spring to the image at theorigin position and another end of the virtual spring to a position onthe screen (e.g., the center of the screen, a corner of the screen, oran edge of the screen). Any number of virtual springs may be attached toan object. In particular embodiments, the movements of the object may bedetermined based on Hooke's law: F=−kx; where x is the displacement ofthe spring's end from its equilibrium position (e.g., a distance, in SIunits: meters), F is the restoring force exerted by the spring on thatend (in SI units: N or kg·m/s2), and k is a constant called the rate orspring constant (in SI units: N/m or kg/s2). When this equation holds,the behavior is said to be linear. The negative sign on the right handside of the equation is there because the restoring force always acts inthe opposite direction of the displacement (e.g., when a spring isstretched to the left, it pulls back to the right). In general, thefollowing properties are involved in determining spring movement: mass,damping, spring stiffness, spring rest length. In some implementations,a virtual mass may be assigned to the object.

In particular embodiments, a virtual spring may have different statevalues based on attributes of the image being displayed. The spring mayramp from one set of state value to another, instead of cutting, to makeanimation sequence of the object's movements appear more natural. Forexample the distance between an edge of the image and the originposition may be used to determine the tightening of the springs used inthe animation or the level of ramping from one set of state values toanother.

In particular embodiments, a physics engine implements the algorithmsthat simulate spring movement. One or more virtual springs may beattached to an object. For example, if a computing device is tilted soas to activate scrolling of an image displayed on a screen, a virtualspring may be attached to the origin position in the image. As theobject moves (e.g., scrolled by the tilting motion), its movementfollows the paths of the virtual spring, so that the movement of theobject is animated based on the physics of the spring's movement. Inparticular embodiments, the algorithm may take into considerationvariables such as tension, mass, damping effect, the measured tilt, etc.As an example, as the image is scrolled away from the origin positionand closer to an edge (thereby stretching the spring further), thescrolling speed may slow down. Conversely, as the image is scrolled backtowards the origin position, the scrolling speed may speed up. Inanother example, as the image scrolls away from the origin position and“hits” the edge, the image may appear to bounce upon reaching the edge.

In particular embodiments, when zooming in on an object, the objectincreases in size. When zooming out on an object, the object decreasesin size. The changing of the object's size may be depicted in ananimation sequence, where the movements of the object may be based onspring movements. In particular embodiments, as an object moves towardsits final destination, the intermediate positions of the object may beinterpolated based on spring movements. When the origin position isre-calibrated based on designation of a new origin position, the virtualspring may be re-attached to the new origin position.

At step 280, the computing device may receive input to re-calibrate theorigin position at a new origin position. After the user has scrolledaway from the origin position to a new position, the user mayre-calibrate the origin position at the new position (e.g., clicking andholding a finger down on the new position). In that case, the computingdevice may return to step 240 to determine the new origin position, andthen continue to provide scrolling functionality, based on the neworigin position.

At step 290, the computing device may receive continued indications thatthe sensor(s) are detecting movement as the user continues to tilt thecomputing device. In particular embodiments, the method of FIG. 2 may berepeated from step 260 as long as the sensor(s) detect continuousmovement. In particular embodiments, if the computing device detects alack of movement for longer than a threshold period of time, or if thecomputing device detects that the magnitude of the motion detected bythe sensor(s) has dropped below a threshold, the computing device mayreturn to step 250, or it may take over and automatically pan throughthe image.

In particular embodiments, when an image is first displayed on thescreen, it may automatically pan through the image once, and then, oncethe pan is complete, the image may be available for scrolling by tiltingthe computing device. In connection with panning through images,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.patent application Ser. No. 13/676,831, entitled “Image Panning andZooming Effect” and filed 14 Nov. 2012, which is incorporated herein byreference as an example and not by way of limitation.

Particular embodiments may repeat one or more steps of the method ofFIG. 2, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 2 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 2 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates particular components,devices, or systems carrying out particular steps of the method of FIG.2, this disclosure contemplates any suitable combination of any suitablecomponents, devices, or systems carrying out any suitable steps of themethod of FIG. 2.

FIG. 3 illustrates an example computer system 300. In particularembodiments, one or more computer systems 300 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 300 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 300 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 300.Herein, reference to a computer system may encompass a computing device,and vice versa, where appropriate. Moreover, reference to a computersystem may encompass one or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems300. This disclosure contemplates computer system 300 taking anysuitable physical form. As example and not by way of limitation,computer system 300 may be an embedded computer system, a system-on-chip(SOC), a single-board computer system (SBC) (such as, for example, acomputer-on-module (COM) or system-on-module (SOM)), a desktop computersystem, a laptop or notebook computer system, an interactive kiosk, amainframe, a mesh of computer systems, a mobile telephone, a personaldigital assistant (PDA), a server, a tablet computer system, or acombination of two or more of these. Where appropriate, computer system300 may include one or more computer systems 300; be unitary ordistributed; span multiple locations; span multiple machines; spanmultiple data centers; or reside in a cloud, which may include one ormore cloud components in one or more networks. Where appropriate, one ormore computer systems 300 may perform without substantial spatial ortemporal limitation one or more steps of one or more methods describedor illustrated herein. As an example and not by way of limitation, oneor more computer systems 300 may perform in real time or in batch modeone or more steps of one or more methods described or illustratedherein. One or more computer systems 300 may perform at different timesor at different locations one or more steps of one or more methodsdescribed or illustrated herein, where appropriate.

In particular embodiments, computer system 300 includes a processor 302,memory 304, storage 306, an input/output (I/O) interface 308, acommunication interface 310, and a bus 312. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 302 includes hardware for executinginstructions, such as those making up a computer program. As an exampleand not by way of limitation, to execute instructions, processor 302 mayretrieve (or fetch) the instructions from an internal register, aninternal cache, memory 304, or storage 306; decode and execute them; andthen write one or more results to an internal register, an internalcache, memory 304, or storage 306. In particular embodiments, processor302 may include one or more internal caches for data, instructions, oraddresses. This disclosure contemplates processor 302 including anysuitable number of any suitable internal caches, where appropriate. Asan example and not by way of limitation, processor 302 may include oneor more instruction caches, one or more data caches, and one or moretranslation lookaside buffers (TLBs). Instructions in the instructioncaches may be copies of instructions in memory 304 or storage 306, andthe instruction caches may speed up retrieval of those instructions byprocessor 302. Data in the data caches may be copies of data in memory304 or storage 306 for instructions executing at processor 302 tooperate on; the results of previous instructions executed at processor302 for access by subsequent instructions executing at processor 302 orfor writing to memory 304 or storage 306; or other suitable data. Thedata caches may speed up read or write operations by processor 302. TheTLBs may speed up virtual-address translation for processor 302. Inparticular embodiments, processor 302 may include one or more internalregisters for data, instructions, or addresses. This disclosurecontemplates processor 302 including any suitable number of any suitableinternal registers, where appropriate. Where appropriate, processor 302may include one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 302. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 304 includes main memory for storinginstructions for processor 302 to execute or data for processor 302 tooperate on. As an example and not by way of limitation, computer system300 may load instructions from storage 306 or another source (such as,for example, another computer system 300) to memory 304. Processor 302may then load the instructions from memory 304 to an internal registeror internal cache. To execute the instructions, processor 302 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 302 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor302 may then write one or more of those results to memory 304. Inparticular embodiments, processor 302 executes only instructions in oneor more internal registers or internal caches or in memory 304 (asopposed to storage 306 or elsewhere) and operates only on data in one ormore internal registers or internal caches or in memory 304 (as opposedto storage 306 or elsewhere). One or more memory buses (which may eachinclude an address bus and a data bus) may couple processor 302 tomemory 304. Bus 312 may include one or more memory buses, as describedbelow. In particular embodiments, one or more memory management units(MMUs) reside between processor 302 and memory 304 and facilitateaccesses to memory 304 requested by processor 302. In particularembodiments, memory 304 includes random access memory (RAM). This RAMmay be volatile memory, where appropriate Where appropriate, this RAMmay be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 304 may include one ormore memories 304, where appropriate. Although this disclosure describesand illustrates particular memory, this disclosure contemplates anysuitable memory.

In particular embodiments, storage 306 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 306may include a hard disk drive (HDD), a floppy disk drive, flash memory,an optical disc, a magneto-optical disc, magnetic tape, or a UniversalSerial Bus (USB) drive or a combination of two or more of these. Storage306 may include removable or non-removable (or fixed) media, whereappropriate. Storage 306 may be internal or external to computer system300, where appropriate. In particular embodiments, storage 306 isnon-volatile, solid-state memory. In particular embodiments, storage 306includes read-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 306 taking any suitable physicalform. Storage 306 may include one or more storage control unitsfacilitating communication between processor 302 and storage 306, whereappropriate. Where appropriate, storage 306 may include one or morestorages 306. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 308 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 300 and one or more I/O devices. Computer system300 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 300. As an example and not by way of limitation, anI/O device may include a keyboard, keypad, microphone, monitor, mouse,printer, scanner, speaker, still camera, stylus, tablet, touch screen,trackball, video camera, another suitable I/O device or a combination oftwo or more of these. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 308 for them. Where appropriate, I/O interface 308 mayinclude one or more device or software drivers enabling processor 302 todrive one or more of these I/O devices. I/O interface 308 may includeone or more I/O interfaces 308, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 310 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 300 and one or more other computer systems 300 or one ormore networks. As an example and not by way of limitation, communicationinterface 310 may include a network interface controller (NIC) ornetwork adapter for communicating with an Ethernet or other wire-basednetwork or a wireless NIC (WNIC) or wireless adapter for communicatingwith a wireless network, such as a WI-FI network. This disclosurecontemplates any suitable network and any suitable communicationinterface 310 for it. As an example and not by way of limitation,computer system 300 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computer system 300 may communicate with a wireless PAN (WPAN)(such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network), or other suitablewireless network or a combination of two or more of these. Computersystem 300 may include any suitable communication interface 310 for anyof these networks, where appropriate. Communication interface 310 mayinclude one or more communication interfaces 310, where appropriate.Although this disclosure describes and illustrates a particularcommunication interface, this disclosure contemplates any suitablecommunication interface.

In particular embodiments, bus 312 includes hardware, software, or bothcoupling components of computer system 300 to each other. As an exampleand not by way of limitation, bus 312 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 312may include one or more buses 312, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,functions, operations, or steps, any of these embodiments may includeany combination or permutation of any of the components, elements,functions, operations, or steps described or illustrated anywhere hereinthat a person having ordinary skill in the art would comprehend.Furthermore, reference in the appended claims to an apparatus or systemor a component of an apparatus or system being adapted to, arranged to,capable of, configured to, enabled to, operable to, or operative toperform a particular function encompasses that apparatus, system,component, whether or not it or that particular function is activated,turned on, or unlocked, as long as that apparatus, system, or componentis so adapted, arranged, capable, configured, enabled, operable, oroperative.

What is claimed is:
 1. A method comprising: by a computing device,sending information to display a visual content item; by the computingdevice, determining a scroll range for the visual content item based onone or more dimensions of the visual content item; by the computingdevice, determining an origin position within the visual content item,wherein the origin position is an initial position in the visual contentitem from which the visual content item is to be scrolled, and whereinthe origin position is determined based on a type of an applicationassociated with the visual content item; by the computing device,receiving an initial tilt measurement of a client computing device; bythe computing device, receiving a second tilt measurement of the clientcomputing device; by the computing device, determining a progressparameter based on at least the scroll range, the origin position, theinitial tilt measurement, and the second tilt measurement; and by thecomputing device, sending information to scroll the visual content itembased on the progress parameter.
 2. The method of claim 1, wherein athreshold for activating scrolling is satisfied by the tiltmeasurements.
 3. The method of claim 1, wherein a threshold foractivating scrolling is satisfied by a rotation rate that is calculatedbased on a delta between the initial tilt measurement and the secondtilt measurement.
 4. The method of claim 1, further comprising applyinga RK4 (Runge-Kutta) solver to the tilt measurements to eliminate noise.5. The method of claim 1, further comprising applying a virtual springeffect to the visual content item in relation to the origin position. 6.The method of claim 5, wherein the virtual spring effect causes thescrolling of the visual content item to appear to bounce when a limit ofthe scroll range is reached.
 7. The method of claim 5, wherein thevirtual spring effect causes the scrolling of the visual content item toappear to slow down as a limit of the scroll range is approached.
 8. Themethod of claim 1, further comprising: receiving input to re-calibratethe origin position; and determining a new origin position based on theinput.
 9. The method of claim 1, wherein the tilt measurements are basedupon motion captured by a gyroscope with respect to a single axis planarwith respect to a presentation of the visual content item.
 10. Themethod of claim 1, wherein the tilt measurements are based upon motioncaptured by a gyroscope with respect to two axes orthogonal with respectto each other, both of which are planar with respect to a presentationof the visual content item.
 11. The method of claim 1, wherein thevisual content item comprises a photo, a number of photos represented asa photo album, a list, a web page, a map, a visual representation of alibrary of items, a video game, or a technical diagram.
 12. The methodof claim 1, further comprising sending a visual hint indicating thatscrolling may be performed on the visual content item.
 13. The method ofclaim 12, wherein the visual hint further indicates one or moredirections in which scrolling is possible.
 14. One or morecomputer-readable non-transitory storage media embodying software thatis operable when executed to: send information to display a visualcontent item: determine a scroll range for the visual content item basedon one or more dimensions of the visual content item; determine anorigin position within the visual content item, wherein the originposition is an initial position in the visual content item from whichthe visual content item is to be scrolled, and wherein the originposition is determined based on a type of an application associated withthe visual content item; receive an initial tilt measurement of a clientcomputing device; receive a second tilt measurement of the clientcomputing device; determine a progress parameter based on at least thescroll range, the origin position, the initial tilt measurement, and thesecond tilt measurement; and send information to scroll the visualcontent item based on the progress parameter.
 15. The media of claim 14,wherein the tilt measurements are based upon motion captured by agyroscope with respect to a single axis planar with respect to apresentation of the visual content item.
 16. The media of claim 14,wherein the tilt measurements are based upon motion captured by agyroscope with respect to two axes orthogonal with respect to eachother, both of which are planar with respect to a presentation of thevisual content item.
 17. A system comprising: one or more processors;and a memory coupled to the processors comprising instructionsexecutable by the processors, the processors being operable whenexecuting the instructions to: send information to display a visualcontent item; determine a scroll range for the visual content item basedon one or more dimensions of the visual content item; determine anorigin position within the visual content item, wherein the orginposition is an initial position in the visual content item from whichthe visual content item is to be scrolled, and wherein the originposition is determined based on a type of an application associated withthe visual content item; receive an initial tilt measurement of a clientcomputing device; receive a second tilt measurement of the clientcomputing device; determine a progress parameter based on at least thescroll range, the origin position, the initial tilt measurement, and thesecond tilt measurement; and send information to scroll the visualcontent item based on the progress parameter.
 18. The system of claim17, wherein the processors are further operable when executing theinstructions to apply a virtual spring effect to the visual content itemin relation to the origin position.
 19. The system of claim 18, whereinthe virtual spring effect causes the scrolling of the visual contentitem to appear to bounce when a limit of the scroll range is reached.20. The system of claim 18, wherein the virtual spring effect causes thescrolling of the visual content item to appear to slow down as a limitof the scroll range is approached.
 21. The media of claim 14, wherein athreshold for activating scrolling is satisfied by the tiltmeasurements.
 22. The media of claim 14, wherein a threshold foractivating scrolling is satisfied by a rotation rate that is calculatedbased on a delta between the initial tilt measurement and the secondtilt measurement.
 23. The media of claim 14, further comprising applyinga RK4 (Runge-Kutta) solver to the tilt measurements to eliminate noise.24. The media of claim 14, further comprising applying a virtual springeffect to the visual content item in relation to the origin position.25. The media of claim 24, wherein the virtual spring effect causes thescrolling of the visual content item to appear to bounce when a limit ofthe scroll range is reached.
 26. The media of claim 24, wherein thevirtual spring effect causes the scrolling of the visual content item toappear to slow down as a limit of the scroll range is approached. 27.The media of claim 14, further comprising: receiving input tore-calibrate the origin position; and determining a new origin positionbased on the input.
 28. The media of claim 14, wherein the visualcontent item comprises a photo, a number of photos represented as aphoto album, a list, a web page, a map, a visual representation of alibrary of items, a video game, or a technical diagram.
 29. The media ofclaim 14, further comprising sending a visual hint indicating thatscrolling may be performed on the visual content item.
 30. The media ofclaim 29, wherein the visual hint further indicates one or moredirections in which scrolling is possible.